package models

import "fmt"

//人类
//想象所有的值都是【-10，10】之间
type Human struct {
	//关系值
	//关系值来源与情绪的累计，触发正面的情绪，比如【喜乐】，则会增长关系值，触发【哀怒】则会减少关系值
	//增加或减少关系值的多少受情感原力特性影响
	RelationValue int

	//当前的情绪，分值从[-20, 20]，周而复始，情绪的解释可以分为喜怒哀乐，四种情绪的断定根据分值决定
	//但是不同情感原力特效的人，在不同分值的断定又不一样
	MoodValue int

	//情感原力，情感原力是人类的一种特性，一般很难改变，正所谓"江山易改本性难移"
	Emotion *PrimitiveEmotion

	//生理原力，分值在【-10， 10】之间，不可周而复始
	PhyValue map[Physiology]int
}

//饿了吗
func (this *Human) Eleme() {
	//定义语言所表达的行为情感值为5
	activeMoodValue := -5

	this.TouchPhysiology(activeMoodValue, Phy_Hungry)

}

//触发身理
func (this *Human) TouchPhysiology(wordMoodValue int, phy Physiology) {
	this.MoodValue = this.PhyValue[phy] + wordMoodValue

	moodState := this.GetMoodState()

	moodDesc := ExplainMoodState(moodState)

	fmt.Printf("mood:%d, 我的心情:%s\n", this.MoodValue, moodDesc)
}

//解释当前的情绪状态
func (this *Human) GetMoodState() Mood {
	switch {
	case this.MoodValue < -15:
		return Mood_Nu
	case this.MoodValue < -10:
		return Mood_Ai
	case this.MoodValue < 0:
		return Mood_Xi
	case this.MoodValue < 5:
		return Mood_Le
	case this.MoodValue < 10:
		return Mood_Xi
	case this.MoodValue < 15:
		return Mood_Ai
	default:
		return Mood_Nu
	}
}

